Combining Inheritance and Parametric Polymorphism in a Functional Database Language
نویسندگان
چکیده
We consider extending a functional database language to support subtyping, inheritance and method overloading. We do so by extending previous work on type inference with subtypes for the pure calculus to cater for structured types, ML-style parametric polymorphism and overloaded function deenitions. We attach semantics to overloaded functions by developing a generalisation of best-t pattern-matching. Although developed for a speciic language, our approach is applicable to other functional database languages, for example languages with a functional data model.
منابع مشابه
Transfer Report Wildcards, Variance and Virtual Classes
Wildcards are used in Java to soften the mismatch between parametric polymorphism (generics) and subtype polymorphism (inheritance). Java with wildcards has not been proven type sound (unlike generics) and so may include security holes that could affect nearly every program written in Java in the last few years (since wildcards are used extensively throughout the Java libraries). The bulk of th...
متن کاملAmber
Introduction The Amber language embeds many recent ideas in programming language design, and tries to introduce all the features in their minimal, essential, form. One of its main goals is to safely blend static typing with the dynamic requirements of a system programming language. For this purpose, multiple inheritance and persistent objects are integrated in a strongly typed language. Other f...
متن کاملModule Constructs for Object-oriented and Functional Programming Languages Dissertation Proposal
Object-oriented languages ooer mechanisms to help structure large programs. However, the semantics of these constructs are often not very precisely deened. For example, the use of inheritance as a substitute for subtype polymorphism in many object-oriented languages either leads to an unsound or a too innexible type system. In addition, ideas from module constructs of functional languages could...
متن کاملOOHaskell
Haskell provides type-class-bounded and parametric polymorphism as opposed to subtype polymorphism of object-oriented languages such as Java and OCaml. It is a contentious question whether Haskell 98 without extensions, or with common extensions, or with new extensions can fully support conventional object-oriented programming with encapsulation, mutable state, inheritance, overriding, statical...
متن کاملFinal Report for EPSRC Grant EP/E016146/1 Relational Parametricity for Computational Effects
Polymorphism is a feature of many programming languages, including typed functional languages (e.g., SML, Haskell), and recent “generic” versions of Java. Relational parametricity, introduced by Reynolds in 1983, is a powerful principle for reasoning about polymorphic programs and types. Previously, relational parametricity has been mainly studied for the second-order lambda calculus, a simple,...
متن کامل